git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 1/8] grep: assert that threading is enabled when calling grep_{lock,unlock}

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 16, 2017, 22:20 UTC
Message-ID
<20170416222102.2320-2-avarab@gmail.com>
In-Reply-To
<20170416222102.2320-1-avarab@gmail.com>

Change the grep_{lock,unlock} functions to assert that num_threads is true, instead of only locking & unlocking the pthread mutex lock when it is.

These functions are never called when num_threads isn't true, this logic has gone through multiple iterations since the initial introduction of grep threading in commit 5b594f457a ("Threaded grep", 2010-01-25), but ever since then they'd only be called if num_threads was true, so this check made the code confusing to read.

Replace the check with an assertion, so that it's clear to the reader that this code path is never taken unless we're spawning threads.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/grep.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/builtin/grep.c b/builtin/grep.c
index 65070c52fc..3aa7836a04 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -73,14 +73,14 @@ static pthread_mutex_t grep_mutex;
 
 static inline void grep_lock(void)
 {
-	if (num_threads)
-		pthread_mutex_lock(&grep_mutex);
+	assert(num_threads);
+	pthread_mutex_lock(&grep_mutex);
 }
 
 static inline void grep_unlock(void)
 {
-	if (num_threads)
-		pthread_mutex_unlock(&grep_mutex);
+	assert(num_threads);
+	pthread_mutex_unlock(&grep_mutex);
 }
 
 /* Signalled when a new work_item is added to todo. */
-- 
2.11.0
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 2 of 9 in “grep threading cleanup & tests”
  1. 0/8 grep threading cleanup & testsÆvar Arnfjörð Bjarmason, Apr 16, 2017
  2. 1/8 grep: assert that threading is enabled when calling grep_{lock,unlock}Ævar Arnfjörð Bjarmason, Apr 16, 2017
  3. 2/8 grep: add tests for --threads=N and grep.threadsÆvar Arnfjörð Bjarmason, Apr 16, 2017
  4. 3/8 grep: don't redundantly compile throwaway patterns under threadingÆvar Arnfjörð Bjarmason, Apr 16, 2017
  5. 4/8 grep: skip pthreads overhead when using one threadÆvar Arnfjörð Bjarmason, Apr 16, 2017
  6. 5/8 tests: add a PTHREADS prerequisiteÆvar Arnfjörð Bjarmason, Apr 16, 2017
  7. 8/8 grep: given --threads with NO_PTHREADS=YesPlease, warnÆvar Arnfjörð Bjarmason, Apr 16, 2017
  8. 7/8 pack-objects: fix buggy warning about threads under NO_PTHREADS=YesPleaseÆvar Arnfjörð Bjarmason, Apr 16, 2017
  9. 6/8 pack-object & index-pack: add test for --threads warning under NO_PTHREADSÆvar Arnfjörð Bjarmason, Apr 16, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.