aboutsummaryrefslogtreecommitdiff
path: root/lib/sqfs/block_processor
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqfs/block_processor')
-rw-r--r--lib/sqfs/block_processor/internal.h3
-rw-r--r--lib/sqfs/block_processor/serial.c8
-rw-r--r--lib/sqfs/block_processor/winpthread.c26
3 files changed, 12 insertions, 25 deletions
diff --git a/lib/sqfs/block_processor/internal.h b/lib/sqfs/block_processor/internal.h
index 4fd2728..a764b2f 100644
--- a/lib/sqfs/block_processor/internal.h
+++ b/lib/sqfs/block_processor/internal.h
@@ -124,9 +124,6 @@ int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp,
sqfs_u8 *scratch, size_t scratch_size);
SQFS_INTERNAL
-int test_and_set_status(sqfs_block_processor_t *proc, int status);
-
-SQFS_INTERNAL
int append_to_work_queue(sqfs_block_processor_t *proc, sqfs_block_t *block);
SQFS_INTERNAL int wait_completed(sqfs_block_processor_t *proc);
diff --git a/lib/sqfs/block_processor/serial.c b/lib/sqfs/block_processor/serial.c
index 9c21950..dce7490 100644
--- a/lib/sqfs/block_processor/serial.c
+++ b/lib/sqfs/block_processor/serial.c
@@ -36,14 +36,6 @@ sqfs_block_processor_t *sqfs_block_processor_create(size_t max_block_size,
return proc;
}
-int test_and_set_status(sqfs_block_processor_t *proc, int status)
-{
- if (proc->status == 0)
- proc->status = status;
-
- return proc->status;
-}
-
int append_to_work_queue(sqfs_block_processor_t *proc, sqfs_block_t *block)
{
sqfs_block_t *fragblk = NULL;
diff --git a/lib/sqfs/block_processor/winpthread.c b/lib/sqfs/block_processor/winpthread.c
index 6d7c843..ca07718 100644
--- a/lib/sqfs/block_processor/winpthread.c
+++ b/lib/sqfs/block_processor/winpthread.c
@@ -410,19 +410,6 @@ static int process_done_queue(sqfs_block_processor_t *proc, sqfs_block_t *queue)
return status;
}
-int test_and_set_status(sqfs_block_processor_t *proc, int status)
-{
- LOCK(&proc->mtx);
- if (proc->status == 0) {
- proc->status = status;
- } else {
- status = proc->status;
- }
- SIGNAL_ALL(&proc->queue_cond);
- UNLOCK(&proc->mtx);
- return status;
-}
-
int wait_completed(sqfs_block_processor_t *proc)
{
sqfs_block_t *queue;
@@ -446,5 +433,16 @@ int wait_completed(sqfs_block_processor_t *proc)
}
status = process_done_queue(proc, queue);
- return status ? test_and_set_status(proc, status) : status;
+
+ if (status != 0) {
+ LOCK(&proc->mtx);
+ if (proc->status == 0) {
+ proc->status = status;
+ } else {
+ status = proc->status;
+ }
+ SIGNAL_ALL(&proc->queue_cond);
+ UNLOCK(&proc->mtx);
+ }
+ return status;
}