Merge branch 'nd/pthreads'
The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS". * nd/pthreads: Clean up pthread_create() error handling read-cache.c: initialize copy_len to shut up gcc 8 read-cache.c: reduce branching based on HAVE_THREADS read-cache.c: remove #ifdef NO_PTHREADS pack-objects: remove #ifdef NO_PTHREADS preload-index.c: remove #ifdef NO_PTHREADS grep: clean up num_threads handling grep: remove #ifdef NO_PTHREADS attr.c: remove #ifdef NO_PTHREADS name-hash.c: remove #ifdef NO_PTHREADS index-pack: remove #ifdef NO_PTHREADS send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c run-command.h: include thread-utils.h instead of pthread.h thread-utils: macros to unconditionally compile pthreads API
This commit is contained in:
37
read-cache.c
37
read-cache.c
@ -1752,7 +1752,7 @@ static struct cache_entry *create_from_disk(struct mem_pool *ce_mem_pool,
|
||||
size_t len;
|
||||
const char *name;
|
||||
unsigned int flags;
|
||||
size_t copy_len;
|
||||
size_t copy_len = 0;
|
||||
/*
|
||||
* Adjacent cache entries tend to share the leading paths, so it makes
|
||||
* sense to only store the differences in later entries. In the v4
|
||||
@ -1792,8 +1792,6 @@ static struct cache_entry *create_from_disk(struct mem_pool *ce_mem_pool,
|
||||
die(_("malformed name field in the index, near path '%s'"),
|
||||
previous_ce->name);
|
||||
copy_len = previous_len - strip_len;
|
||||
} else {
|
||||
copy_len = 0;
|
||||
}
|
||||
name = (const char *)cp;
|
||||
}
|
||||
@ -1926,19 +1924,15 @@ struct index_entry_offset_table
|
||||
struct index_entry_offset entries[FLEX_ARRAY];
|
||||
};
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
static struct index_entry_offset_table *read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset);
|
||||
static void write_ieot_extension(struct strbuf *sb, struct index_entry_offset_table *ieot);
|
||||
#endif
|
||||
|
||||
static size_t read_eoie_extension(const char *mmap, size_t mmap_size);
|
||||
static void write_eoie_extension(struct strbuf *sb, git_hash_ctx *eoie_context, size_t offset);
|
||||
|
||||
struct load_index_extensions
|
||||
{
|
||||
#ifndef NO_PTHREADS
|
||||
pthread_t pthread;
|
||||
#endif
|
||||
struct index_state *istate;
|
||||
const char *mmap;
|
||||
size_t mmap_size;
|
||||
@ -2016,8 +2010,6 @@ static unsigned long load_all_cache_entries(struct index_state *istate,
|
||||
return consumed;
|
||||
}
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
|
||||
/*
|
||||
* Mostly randomly chosen maximum thread counts: we
|
||||
* cap the parallelism to online_cpus() threads, and we want
|
||||
@ -2128,7 +2120,6 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
|
||||
|
||||
return consumed;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* remember to discard_cache() before reading a different cache! */
|
||||
int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
||||
@ -2141,10 +2132,8 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
||||
size_t mmap_size;
|
||||
struct load_index_extensions p;
|
||||
size_t extension_offset = 0;
|
||||
#ifndef NO_PTHREADS
|
||||
int nr_threads, cpus;
|
||||
struct index_entry_offset_table *ieot = NULL;
|
||||
#endif
|
||||
|
||||
if (istate->initialized)
|
||||
return istate->cache_nr;
|
||||
@ -2187,7 +2176,6 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
||||
|
||||
src_offset = sizeof(*hdr);
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
nr_threads = git_config_get_index_threads();
|
||||
|
||||
/* TODO: does creating more threads than cores help? */
|
||||
@ -2198,6 +2186,9 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
||||
nr_threads = cpus;
|
||||
}
|
||||
|
||||
if (!HAVE_THREADS)
|
||||
nr_threads = 1;
|
||||
|
||||
if (nr_threads > 1) {
|
||||
extension_offset = read_eoie_extension(mmap, mmap_size);
|
||||
if (extension_offset) {
|
||||
@ -2225,22 +2216,16 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
||||
} else {
|
||||
src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
|
||||
}
|
||||
#else
|
||||
src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
|
||||
#endif
|
||||
|
||||
istate->timestamp.sec = st.st_mtime;
|
||||
istate->timestamp.nsec = ST_MTIME_NSEC(st);
|
||||
|
||||
/* if we created a thread, join it otherwise load the extensions on the primary thread */
|
||||
#ifndef NO_PTHREADS
|
||||
if (extension_offset) {
|
||||
int ret = pthread_join(p.pthread, NULL);
|
||||
if (ret)
|
||||
die(_("unable to join load_index_extensions thread: %s"), strerror(ret));
|
||||
}
|
||||
#endif
|
||||
if (!extension_offset) {
|
||||
} else {
|
||||
p.src_offset = src_offset;
|
||||
load_index_extensions(&p);
|
||||
}
|
||||
@ -2762,8 +2747,11 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)
|
||||
return -1;
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
nr_threads = git_config_get_index_threads();
|
||||
if (HAVE_THREADS)
|
||||
nr_threads = git_config_get_index_threads();
|
||||
else
|
||||
nr_threads = 1;
|
||||
|
||||
if (nr_threads != 1) {
|
||||
int ieot_blocks, cpus;
|
||||
|
||||
@ -2793,7 +2781,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
ieot_entries = DIV_ROUND_UP(entries, ieot_blocks);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
offset = lseek(newfd, 0, SEEK_CUR);
|
||||
if (offset < 0) {
|
||||
@ -2877,7 +2864,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
* strip_extensions parameter as we need it when loading the shared
|
||||
* index.
|
||||
*/
|
||||
#ifndef NO_PTHREADS
|
||||
if (ieot) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
@ -2889,7 +2875,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
if (err)
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!strip_extensions && istate->split_index) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
@ -3475,7 +3460,6 @@ static void write_eoie_extension(struct strbuf *sb, git_hash_ctx *eoie_context,
|
||||
strbuf_add(sb, hash, the_hash_algo->rawsz);
|
||||
}
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
#define IEOT_VERSION (1)
|
||||
|
||||
static struct index_entry_offset_table *read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset)
|
||||
@ -3548,4 +3532,3 @@ static void write_ieot_extension(struct strbuf *sb, struct index_entry_offset_ta
|
||||
strbuf_add(sb, &buffer, sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user