aboutsummaryrefslogtreecommitdiffstats
path: root/grep.h
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2011-12-12 22:16:07 +0100
committerJunio C Hamano <gitster@pobox.com>2011-12-16 15:47:10 -0800
commit0579f91dd74a0902e52d1e6e839cc31b99f12cfc (patch)
tree89caa085455a31a6e3b46434a258d630fb8c7154 /grep.h
parentb8ffedca6f9e1043956ba611ae52bea449779456 (diff)
downloadgit-0579f91dd74a0902e52d1e6e839cc31b99f12cfc.tar.gz
grep: enable threading with -p and -W using lazy attribute lookup
Lazily load the userdiff attributes in match_funcname(). Use a separate mutex around this loading to protect the (not thread-safe) attributes machinery. This lets us re-enable threading with -p and -W while reducing the overhead caused by looking up attributes. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.h')
-rw-r--r--grep.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/grep.h b/grep.h
index a65280026d..fb205f3542 100644
--- a/grep.h
+++ b/grep.h
@@ -8,6 +8,7 @@ typedef int pcre;
typedef int pcre_extra;
#endif
#include "kwset.h"
+#include "thread-utils.h"
enum grep_pat_token {
GREP_PATTERN,
@@ -115,6 +116,7 @@ struct grep_opt {
int show_hunk_mark;
int file_break;
int heading;
+ int use_threads;
void *priv;
void (*output)(struct grep_opt *opt, const void *data, size_t size);
@@ -131,4 +133,12 @@ extern int grep_buffer(struct grep_opt *opt, const char *name, char *buf, unsign
extern struct grep_opt *grep_opt_dup(const struct grep_opt *opt);
extern int grep_threads_ok(const struct grep_opt *opt);
+#ifndef NO_PTHREADS
+/*
+ * Mutex used around access to the attributes machinery if
+ * opt->use_threads. Must be initialized/destroyed by callers!
+ */
+extern pthread_mutex_t grep_attr_mutex;
+#endif
+
#endif