From 335fe260a81f61ec99ff5940df733b4c50aedb7c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 9 Apr 2011 15:11:13 +0300 Subject: [PATCH] xz: Minor internal changes to handling of --threads. Now it always defaults to one thread. Maybe this will change again if a threading method is added that doesn't affect memory usage. --- src/xz/args.c | 4 ++-- src/xz/hardware.c | 24 ++++++++++++------------ src/xz/hardware.h | 9 ++++----- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/xz/args.c b/src/xz/args.c index f207e7f4..17ac0609 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -179,8 +179,8 @@ parse_real(args_info *args, int argc, char **argv) break; case 'T': - hardware_threadlimit_set(str_to_uint64( - "threads", optarg, 0, UINT32_MAX)); + hardware_threads_set(str_to_uint64("threads", + optarg, 0, LZMA_THREADS_MAX)); break; // --version diff --git a/src/xz/hardware.c b/src/xz/hardware.c index a4733c27..925926ca 100644 --- a/src/xz/hardware.c +++ b/src/xz/hardware.c @@ -14,9 +14,9 @@ #include "tuklib_cpucores.h" -/// Maximum number of free *coder* threads. This can be set with +/// Maximum number of worker threads. This can be set with /// the --threads=NUM command line option. -static uint32_t threadlimit; +static uint32_t threads_max = 1; /// Memory usage limit for compression static uint64_t memlimit_compress; @@ -29,15 +29,16 @@ static uint64_t total_ram; extern void -hardware_threadlimit_set(uint32_t new_threadlimit) +hardware_threads_set(uint32_t n) { - if (new_threadlimit == 0) { - // The default is the number of available CPU cores. - threadlimit = tuklib_cpucores(); - if (threadlimit == 0) - threadlimit = 1; + if (n == 0) { + // Automatic number of threads was requested. + // Use the number of available CPU cores. + threads_max = tuklib_cpucores(); + if (threads_max == 0) + threads_max = 1; } else { - threadlimit = new_threadlimit; + threads_max = n; } return; @@ -45,9 +46,9 @@ hardware_threadlimit_set(uint32_t new_threadlimit) extern uint32_t -hardware_threadlimit_get(void) +hardware_threads_get(void) { - return threadlimit; + return threads_max; } @@ -139,6 +140,5 @@ hardware_init(void) // Set the defaults. hardware_memlimit_set(0, true, true, false); - hardware_threadlimit_set(0); return; } diff --git a/src/xz/hardware.h b/src/xz/hardware.h index bed952b0..46ebad5b 100644 --- a/src/xz/hardware.h +++ b/src/xz/hardware.h @@ -15,12 +15,11 @@ extern void hardware_init(void); -/// Set custom value for maximum number of coder threads. -extern void hardware_threadlimit_set(uint32_t threadlimit); +/// Set the maximum number of worker threads. +extern void hardware_threads_set(uint32_t threadlimit); -/// Get the maximum number of coder threads. Some additional helper threads -/// are allowed on top of this). -extern uint32_t hardware_threadlimit_get(void); +/// Get the maximum number of worker threads. +extern uint32_t hardware_threads_get(void); /// Set the memory usage limit. There are separate limits for compression