A API pública está declarada em include/cpu.h e include/cpu_diagnostics.h. Inclua os cabeçalhos públicos; não inclua arquivos internos de src/. A API e a biblioteca estão em evolução beta.
#include <stdio.h>
#include "cpu.h"
int main(void)
{
cpu_info_t *info = cpu_get_info();
if (info == NULL) {
fprintf(stderr, "Falha ao consultar CPU: %s\n",
cpu_get_last_error());
return 1;
}
printf("Modelo: %s\n", info->model);
cpu_free_info(info);
return 0;
}Compile a partir da raiz do repositório:
make core
cc -std=c99 -Wall -Wextra -Wpedantic -Iinclude exemplo.c -L. -lcpu -o exemplo
./exemplo| Função | Descrição |
|---|---|
cpu_init() / cpu_cleanup() |
Inicializa ou reinicia o contexto padrão de amostragem por thread. |
cpu_get_info() |
Retorna um snapshot alocado de informações de CPU ou NULL. |
cpu_free_info() |
Libera o snapshot retornado por cpu_get_info(). Aceita NULL. |
cpu_get_usage() |
Calcula o uso agregado entre amostras no contexto padrão. |
cpu_usage_context_init() |
Inicializa um contexto explícito de amostragem independente. |
cpu_get_usage_context() |
Calcula o uso agregado usando um contexto explícito. |
cpu_usage_context_cleanup() |
Reinicia/limpa o contexto explícito. |
cpu_get_temperature() |
Consulta temperatura em graus Celsius quando disponível. |
cpu_get_clock_speed() |
Consulta frequência atual em MHz quando disponível. |
cpu_get_active_processes() |
Retorna a contagem runnable informada por /proc/loadavg. |
Variantes *_ex |
Associam um snapshot de erro à operação por meio de cpu_error_info_t. |
Para o relatório estruturado por métrica, consulte API de diagnóstico.
cpu_get_info(): ponteiro para snapshot ouNULLem falha.cpu_get_usage*(): percentual calculado entre 0 e 100;-1.0fem falha. A primeira amostra de um contexto estabelece baseline e retorna0.0fna API legada.cpu_get_temperature()ecpu_get_clock_speed():-1.0fquando indisponíveis ou inválidas.cpu_get_active_processes():-1em falha.physical_cores == 0: topologia física desconhecida ou indisponível, não ausência de núcleos.logical_processors: quantidade de entradas de processador lógico identificadas na fonte lida.threads: campo legado baseado em processadores online visíveis viasysconf; não é sinônimo obrigatório delogical_processors.
Não apresente valores sentinela como medições. Para novas APIs, o projeto está migrando para estados explícitos por métrica.
- O consumidor é responsável por liberar cada snapshot
cpu_info_t *comcpu_free_info(). - O snapshot retornado não deve ser usado depois de liberado.
- Estruturas
cpu_error_info_tfornecidas ao chamador são de propriedade do chamador. - Não mantenha ponteiros para buffers locais depois do retorno de uma função.
- Sempre verifique o retorno antes de ler os campos de uma estrutura.
As funções legadas cpu_get_last_error_code() e cpu_get_last_error() fornecem o diagnóstico da operação recente na thread atual. Consulte-as imediatamente após a chamada que falhou.
As variantes *_ex recebem um cpu_error_info_t * pertencente ao chamador e tornam o erro associado à operação explícito. Use cpu_error_info_clear() quando desejar limpar a estrutura. Veja os tipos e contratos exatos nos cabeçalhos públicos.
| Recurso | Contrato |
|---|---|
| Contexto padrão | O estado de amostragem é local à thread no toolchain suportado; chamadas na mesma thread compartilham o baseline padrão. |
cpu_usage_context_t |
Use um contexto independente por thread. Se for compartilhado, o consumidor deve sincronizar todo acesso mutável. |
cpu_error_info_t |
A estrutura pertence ao chamador; não compartilhe a mesma instância mutável sem sincronização. |
Variáveis CPU_READER_*_PATH |
Configure antes de iniciar threads. Alterar o ambiente concorrentemente com leituras não é seguro. |
A existência de estado local à thread não torna um mesmo contexto explícito seguro para uso concorrente. A biblioteca não oferece um lock implícito para contextos pertencentes ao consumidor.
A implementação suporta overrides de caminho para algumas fontes, incluindo CPU_READER_CPUINFO_PATH, CPU_READER_PROC_STAT_PATH, CPU_READER_LOADAVG_PATH, CPU_READER_CPU_TEMP_PATH, CPU_READER_THERMAL_PATH e CPU_READER_CPU_FREQ_PATH. Consulte arquitetura e os testes para os formatos exatos.
Configure overrides antes de iniciar threads e use arquivos de fixture controlados. Não use esses overrides como mecanismo de configuração de segurança para processos não confiáveis.
A API existente fornece informações de CPU e uso agregado, temperatura/frequência opcionais, contagem runnable e diagnóstico. A coleta pública de uso por CPU lógica, memória/swap/PSI, rede e I/O por dispositivo é planejada, não deve ser inferida da interface GTK. Acompanhe o roadmap.
A biblioteca observa dados expostos pelo sistema operacional. Não fornece atestação criptográfica de hardware, kernel ou firmware, nem garante calibração física de sensores.