Commit 799e22ea by Carlos Martín Nieto

Rename git_threads_ to git_libgit2_

This describes their purpose better, as we now initialize ssl and some
other global stuff in there. Calling the init function is not something
which has been optional for a while now.
parent 4865cc3f
...@@ -122,3 +122,7 @@ v0.21 + 1 ...@@ -122,3 +122,7 @@ v0.21 + 1
* The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL * The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL
has been changed to match git 1.9.0 and later. In this mode, libgit2 now has been changed to match git 1.9.0 and later. In this mode, libgit2 now
fetches all tags in addition to whatever else needs to be fetched. fetches all tags in addition to whatever else needs to be fetched.
* git_threads_init() and git_threads_shutdown() have been renamed to
git_libgit2_init() and git_libgit2_shutdown() to better explain what
their purpose is, as it's grown to be more than just about threads.
...@@ -40,7 +40,7 @@ int main (int argc, char** argv) ...@@ -40,7 +40,7 @@ int main (int argc, char** argv)
int options = 0, count = 0; int options = 0, count = 0;
struct print_payload payload = {0}; struct print_payload payload = {0};
git_threads_init(); git_libgit2_init();
parse_opts(&options, &count, argc, argv); parse_opts(&options, &count, argc, argv);
...@@ -66,7 +66,7 @@ int main (int argc, char** argv) ...@@ -66,7 +66,7 @@ int main (int argc, char** argv)
git_index_free(index); git_index_free(index);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -48,7 +48,7 @@ int main(int argc, char *argv[]) ...@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
git_blob *blob; git_blob *blob;
git_object *obj; git_object *obj;
git_threads_init(); git_libgit2_init();
parse_opts(&o, argc, argv); parse_opts(&o, argc, argv);
if (o.M) blameopts.flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES; if (o.M) blameopts.flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES;
...@@ -131,7 +131,7 @@ int main(int argc, char *argv[]) ...@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
git_blame_free(blame); git_blame_free(blame);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -127,7 +127,7 @@ int main(int argc, char *argv[]) ...@@ -127,7 +127,7 @@ int main(int argc, char *argv[])
git_object *obj = NULL; git_object *obj = NULL;
char oidstr[GIT_OID_HEXSZ + 1]; char oidstr[GIT_OID_HEXSZ + 1];
git_threads_init(); git_libgit2_init();
parse_opts(&o, argc, argv); parse_opts(&o, argc, argv);
...@@ -190,7 +190,7 @@ int main(int argc, char *argv[]) ...@@ -190,7 +190,7 @@ int main(int argc, char *argv[])
git_object_free(obj); git_object_free(obj);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -145,7 +145,7 @@ int main(int argc, char **argv) ...@@ -145,7 +145,7 @@ int main(int argc, char **argv)
git_repository *repo; git_repository *repo;
describe_options opts; describe_options opts;
git_threads_init(); git_libgit2_init();
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
"Could not open repository", NULL); "Could not open repository", NULL);
...@@ -156,7 +156,7 @@ int main(int argc, char **argv) ...@@ -156,7 +156,7 @@ int main(int argc, char **argv)
do_describe(repo, &opts); do_describe(repo, &opts);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
...@@ -77,7 +77,7 @@ int main(int argc, char *argv[]) ...@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
-1, 0, 0, GIT_DIFF_FORMAT_PATCH, NULL, NULL, "." -1, 0, 0, GIT_DIFF_FORMAT_PATCH, NULL, NULL, "."
}; };
git_threads_init(); git_libgit2_init();
parse_opts(&o, argc, argv); parse_opts(&o, argc, argv);
...@@ -163,7 +163,7 @@ int main(int argc, char *argv[]) ...@@ -163,7 +163,7 @@ int main(int argc, char *argv[])
git_tree_free(t2); git_tree_free(t2);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -59,6 +59,10 @@ static void check_error(int error_code, const char *action) ...@@ -59,6 +59,10 @@ static void check_error(int error_code, const char *action)
int main (int argc, char** argv) int main (int argc, char** argv)
{ {
// Initialize the library, this will set up any global state which libgit2 needs
// including threading and crypto
git_libgit2_init();
// ### Opening the Repository // ### Opening the Repository
// There are a couple of methods for opening a repository, this being the // There are a couple of methods for opening a repository, this being the
......
...@@ -46,7 +46,7 @@ int main(int argc, char *argv[]) ...@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
git_repository *repo = NULL; git_repository *repo = NULL;
struct opts o = { 1, 0, 0, 0, GIT_REPOSITORY_INIT_SHARED_UMASK, 0, 0, 0 }; struct opts o = { 1, 0, 0, 0, GIT_REPOSITORY_INIT_SHARED_UMASK, 0, 0, 0 };
git_threads_init(); git_libgit2_init();
parse_opts(&o, argc, argv); parse_opts(&o, argc, argv);
...@@ -116,7 +116,7 @@ int main(int argc, char *argv[]) ...@@ -116,7 +116,7 @@ int main(int argc, char *argv[])
} }
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) ...@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
git_commit *commit = NULL; git_commit *commit = NULL;
git_pathspec *ps = NULL; git_pathspec *ps = NULL;
git_threads_init(); git_libgit2_init();
/** Parse arguments and set up revwalker. */ /** Parse arguments and set up revwalker. */
...@@ -180,7 +180,7 @@ int main(int argc, char *argv[]) ...@@ -180,7 +180,7 @@ int main(int argc, char *argv[])
git_pathspec_free(ps); git_pathspec_free(ps);
git_revwalk_free(s.walker); git_revwalk_free(s.walker);
git_repository_free(s.repo); git_repository_free(s.repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -54,7 +54,7 @@ int main(int argc, char **argv) ...@@ -54,7 +54,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
git_threads_init(); git_libgit2_init();
for (i = 0; commands[i].name != NULL; ++i) { for (i = 0; commands[i].name != NULL; ++i) {
if (!strcmp(argv[1], commands[i].name)) if (!strcmp(argv[1], commands[i].name))
......
...@@ -24,7 +24,7 @@ int main (int argc, char **argv) ...@@ -24,7 +24,7 @@ int main (int argc, char **argv)
git_oid oid; git_oid oid;
char buf[GIT_OID_HEXSZ+1]; char buf[GIT_OID_HEXSZ+1];
git_threads_init(); git_libgit2_init();
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), "opening repository", NULL); check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), "opening repository", NULL);
check_lg2(git_revwalk_new(&walk, repo), "allocating revwalk", NULL); check_lg2(git_revwalk_new(&walk, repo), "allocating revwalk", NULL);
...@@ -36,7 +36,7 @@ int main (int argc, char **argv) ...@@ -36,7 +36,7 @@ int main (int argc, char **argv)
printf("%s\n", buf); printf("%s\n", buf);
} }
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -29,13 +29,13 @@ int main(int argc, char *argv[]) ...@@ -29,13 +29,13 @@ int main(int argc, char *argv[])
{ {
struct parse_state ps = {0}; struct parse_state ps = {0};
git_threads_init(); git_libgit2_init();
parse_opts(&ps, argc, argv); parse_opts(&ps, argc, argv);
check_lg2(parse_revision(&ps), "Parsing", NULL); check_lg2(parse_revision(&ps), "Parsing", NULL);
git_repository_free(ps.repo); git_repository_free(ps.repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -23,7 +23,7 @@ int main (int argc, char** argv) ...@@ -23,7 +23,7 @@ int main (int argc, char** argv)
char out[GIT_OID_HEXSZ+1]; char out[GIT_OID_HEXSZ+1];
out[GIT_OID_HEXSZ] = '\0'; out[GIT_OID_HEXSZ] = '\0';
git_threads_init(); git_libgit2_init();
if (argc > 2) if (argc > 2)
fatal("usage: showindex [<repo-dir>]", NULL); fatal("usage: showindex [<repo-dir>]", NULL);
...@@ -64,7 +64,7 @@ int main (int argc, char** argv) ...@@ -64,7 +64,7 @@ int main (int argc, char** argv)
} }
git_index_free(index); git_index_free(index);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
...@@ -73,7 +73,7 @@ int main(int argc, char *argv[]) ...@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
git_status_list *status; git_status_list *status;
struct opts o = { GIT_STATUS_OPTIONS_INIT, "." }; struct opts o = { GIT_STATUS_OPTIONS_INIT, "." };
git_threads_init(); git_libgit2_init();
o.statusopt.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR; o.statusopt.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
o.statusopt.flags = GIT_STATUS_OPT_INCLUDE_UNTRACKED | o.statusopt.flags = GIT_STATUS_OPT_INCLUDE_UNTRACKED |
...@@ -135,7 +135,7 @@ show_status: ...@@ -135,7 +135,7 @@ show_status:
} }
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
......
...@@ -300,7 +300,7 @@ int main(int argc, char **argv) ...@@ -300,7 +300,7 @@ int main(int argc, char **argv)
tag_action action; tag_action action;
tag_state state; tag_state state;
git_threads_init(); git_libgit2_init();
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
"Could not open repository", NULL); "Could not open repository", NULL);
...@@ -313,7 +313,7 @@ int main(int argc, char **argv) ...@@ -313,7 +313,7 @@ int main(int argc, char **argv)
action(&state); action(&state);
git_repository_free(repo); git_repository_free(repo);
git_threads_shutdown(); git_libgit2_shutdown();
return 0; return 0;
} }
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#include "git2/status.h" #include "git2/status.h"
#include "git2/submodule.h" #include "git2/submodule.h"
#include "git2/tag.h" #include "git2/tag.h"
#include "git2/threads.h" #include "git2/global.h"
#include "git2/transport.h" #include "git2/transport.h"
#include "git2/tree.h" #include "git2/tree.h"
#include "git2/types.h" #include "git2/types.h"
......
/*
* Copyright (C) the libgit2 contributors. All rights reserved.
*
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
#ifndef INCLUDE_git_global_h__
#define INCLUDE_git_global_h__
#include "common.h"
GIT_BEGIN_DECL
/**
* Init the global state
*
* This function must the called before any other libgit2 function in
* order to set up global state and threading.
*
* This function may be called multiple times.
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_libgit2_init(void);
/**
* Shutdown the global state
*
* Clean up the global state and threading context after calling it as
* many times as `git_libgit2_init()` was called.
*
*/
GIT_EXTERN(void) git_libgit2_shutdown(void);
/** @} */
GIT_END_DECL
#endif
...@@ -19,32 +19,6 @@ ...@@ -19,32 +19,6 @@
GIT_BEGIN_DECL GIT_BEGIN_DECL
/** /**
* Init the threading system.
*
* If libgit2 has been built with GIT_THREADS
* on, this function must be called once before
* any other library functions.
*
* If libgit2 has been built without GIT_THREADS
* support, this function is a no-op.
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_threads_init(void);
/**
* Shutdown the threading system.
*
* If libgit2 has been built with GIT_THREADS
* on, this function must be called before shutting
* down the library.
*
* If libgit2 has been built without GIT_THREADS
* support, this function is a no-op.
*/
GIT_EXTERN(void) git_threads_shutdown(void);
/**
* Initialize the OpenSSL locks * Initialize the OpenSSL locks
* *
* OpenSSL requires the application to determine how it performs * OpenSSL requires the application to determine how it performs
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "hash.h" #include "hash.h"
#include "sysdir.h" #include "sysdir.h"
#include "git2/threads.h" #include "git2/threads.h"
#include "git2/global.h"
#include "thread-utils.h" #include "thread-utils.h"
...@@ -133,7 +134,7 @@ int git_openssl_set_locking(void) ...@@ -133,7 +134,7 @@ int git_openssl_set_locking(void)
* Handle the global state with TLS * Handle the global state with TLS
* *
* If libgit2 is built with GIT_THREADS enabled, * If libgit2 is built with GIT_THREADS enabled,
* the `git_threads_init()` function must be called * the `git_libgit2_init()` function must be called
* before calling any other function of the library. * before calling any other function of the library.
* *
* This function allocates a TLS index (using pthreads * This function allocates a TLS index (using pthreads
...@@ -146,7 +147,7 @@ int git_openssl_set_locking(void) ...@@ -146,7 +147,7 @@ int git_openssl_set_locking(void)
* allocated on each thread. * allocated on each thread.
* *
* Before shutting down the library, the * Before shutting down the library, the
* `git_threads_shutdown` method must be called to free * `git_libgit2_shutdown` method must be called to free
* the previously reserved TLS index. * the previously reserved TLS index.
* *
* If libgit2 is built without threading support, the * If libgit2 is built without threading support, the
...@@ -156,9 +157,9 @@ int git_openssl_set_locking(void) ...@@ -156,9 +157,9 @@ int git_openssl_set_locking(void)
*/ */
/* /*
* `git_threads_init()` allows subsystems to perform global setup, * `git_libgit2_init()` allows subsystems to perform global setup,
* which may take place in the global scope. An explicit memory * which may take place in the global scope. An explicit memory
* fence exists at the exit of `git_threads_init()`. Without this, * fence exists at the exit of `git_libgit2_init()`. Without this,
* CPU cores are free to reorder cache invalidation of `_tls_init` * CPU cores are free to reorder cache invalidation of `_tls_init`
* before cache invalidation of the subsystems' newly written global * before cache invalidation of the subsystems' newly written global
* state. * state.
...@@ -185,7 +186,7 @@ static int synchronized_threads_init(void) ...@@ -185,7 +186,7 @@ static int synchronized_threads_init(void)
return error; return error;
} }
int git_threads_init(void) int git_libgit2_init(void)
{ {
int error = 0; int error = 0;
...@@ -210,7 +211,7 @@ static void synchronized_threads_shutdown(void) ...@@ -210,7 +211,7 @@ static void synchronized_threads_shutdown(void)
git_mutex_free(&git__mwindow_mutex); git_mutex_free(&git__mwindow_mutex);
} }
void git_threads_shutdown(void) void git_libgit2_shutdown(void)
{ {
/* Enter the lock */ /* Enter the lock */
while (InterlockedCompareExchange(&_mutex, 1, 0)) { Sleep(0); } while (InterlockedCompareExchange(&_mutex, 1, 0)) { Sleep(0); }
...@@ -272,14 +273,14 @@ static void init_once(void) ...@@ -272,14 +273,14 @@ static void init_once(void)
GIT_MEMORY_BARRIER; GIT_MEMORY_BARRIER;
} }
int git_threads_init(void) int git_libgit2_init(void)
{ {
pthread_once(&_once_init, init_once); pthread_once(&_once_init, init_once);
git_atomic_inc(&git__n_inits); git_atomic_inc(&git__n_inits);
return init_error; return init_error;
} }
void git_threads_shutdown(void) void git_libgit2_shutdown(void)
{ {
void *ptr = NULL; void *ptr = NULL;
pthread_once_t new_once = PTHREAD_ONCE_INIT; pthread_once_t new_once = PTHREAD_ONCE_INIT;
...@@ -320,7 +321,7 @@ git_global_st *git__global_state(void) ...@@ -320,7 +321,7 @@ git_global_st *git__global_state(void)
static git_global_st __state; static git_global_st __state;
int git_threads_init(void) int git_libgit2_init(void)
{ {
static int ssl_inited = 0; static int ssl_inited = 0;
...@@ -333,7 +334,7 @@ int git_threads_init(void) ...@@ -333,7 +334,7 @@ int git_threads_init(void)
return 0; return 0;
} }
void git_threads_shutdown(void) void git_libgit2_shutdown(void)
{ {
/* Shut down any subsystems that have global state */ /* Shut down any subsystems that have global state */
if (0 == git_atomic_dec(&git__n_inits)) if (0 == git_atomic_dec(&git__n_inits))
......
...@@ -236,7 +236,7 @@ int git_hash_ctx_init(git_hash_ctx *ctx) ...@@ -236,7 +236,7 @@ int git_hash_ctx_init(git_hash_ctx *ctx)
/* /*
* When compiled with GIT_THREADS, the global hash_prov data is * When compiled with GIT_THREADS, the global hash_prov data is
* initialized with git_threads_init. Otherwise, it must be initialized * initialized with git_libgit2_init. Otherwise, it must be initialized
* at first use. * at first use.
*/ */
if (hash_prov.type == INVALID && (error = git_hash_global_init()) < 0) if (hash_prov.type == INVALID && (error = git_hash_global_init()) < 0)
......
...@@ -10,7 +10,7 @@ int main(int argc, char *argv[]) ...@@ -10,7 +10,7 @@ int main(int argc, char *argv[])
clar_test_init(argc, argv); clar_test_init(argc, argv);
git_threads_init(); git_libgit2_init();
cl_sandbox_set_search_path_defaults(); cl_sandbox_set_search_path_defaults();
/* Run the test suite */ /* Run the test suite */
...@@ -19,7 +19,7 @@ int main(int argc, char *argv[]) ...@@ -19,7 +19,7 @@ int main(int argc, char *argv[])
clar_test_shutdown(); clar_test_shutdown();
giterr_clear(); giterr_clear();
git_threads_shutdown(); git_libgit2_shutdown();
return res; return res;
} }
...@@ -27,11 +27,11 @@ void test_threads_basic__multiple_init(void) ...@@ -27,11 +27,11 @@ void test_threads_basic__multiple_init(void)
{ {
git_repository *nested_repo; git_repository *nested_repo;
git_threads_init(); git_libgit2_init();
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git"))); cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
git_repository_free(nested_repo); git_repository_free(nested_repo);
git_threads_shutdown(); git_libgit2_shutdown();
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git"))); cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
git_repository_free(nested_repo); git_repository_free(nested_repo);
} }
......
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