1 | /** |
2 | * \file lzma/hardware.h |
3 | * \brief Hardware information |
4 | * |
5 | * Since liblzma can consume a lot of system resources, it also provides |
6 | * ways to limit the resource usage. Applications linking against liblzma |
7 | * need to do the actual decisions how much resources to let liblzma to use. |
8 | * To ease making these decisions, liblzma provides functions to find out |
9 | * the relevant capabilities of the underlying hardware. Currently there |
10 | * is only a function to find out the amount of RAM, but in the future there |
11 | * will be also a function to detect how many concurrent threads the system |
12 | * can run. |
13 | * |
14 | * \note On some operating systems, these function may temporarily |
15 | * load a shared library or open file descriptor(s) to find out |
16 | * the requested hardware information. Unless the application |
17 | * assumes that specific file descriptors are not touched by |
18 | * other threads, this should have no effect on thread safety. |
19 | * Possible operations involving file descriptors will restart |
20 | * the syscalls if they return EINTR. |
21 | */ |
22 | |
23 | /* |
24 | * Author: Lasse Collin |
25 | * |
26 | * This file has been put into the public domain. |
27 | * You can do whatever you want with this file. |
28 | * |
29 | * See ../lzma.h for information about liblzma as a whole. |
30 | */ |
31 | |
32 | #ifndef LZMA_H_INTERNAL |
33 | # error Never include this file directly. Use <lzma.h> instead. |
34 | #endif |
35 | |
36 | |
37 | /** |
38 | * \brief Get the total amount of physical memory (RAM) in bytes |
39 | * |
40 | * This function may be useful when determining a reasonable memory |
41 | * usage limit for decompressing or how much memory it is OK to use |
42 | * for compressing. |
43 | * |
44 | * \return On success, the total amount of physical memory in bytes |
45 | * is returned. If the amount of RAM cannot be determined, |
46 | * zero is returned. This can happen if an error occurs |
47 | * or if there is no code in liblzma to detect the amount |
48 | * of RAM on the specific operating system. |
49 | */ |
50 | extern LZMA_API(uint64_t) lzma_physmem(void) lzma_nothrow; |
51 | |
52 | |
53 | /** |
54 | * \brief Get the number of processor cores or threads |
55 | * |
56 | * This function may be useful when determining how many threads to use. |
57 | * If the hardware supports more than one thread per CPU core, the number |
58 | * of hardware threads is returned if that information is available. |
59 | * |
60 | * \brief On success, the number of available CPU threads or cores is |
61 | * returned. If this information isn't available or an error |
62 | * occurs, zero is returned. |
63 | */ |
64 | extern LZMA_API(uint32_t) lzma_cputhreads(void) lzma_nothrow; |
65 | |