==> include/mesh/abi/host_mload.h <==1/* @ajax/mesh-abi-host-mload: Member load records (ML_*): each member's last load report.
2 *
3 * Part of alpha-c-mesh, a C port of alpha-rust-mesh (README.md says from where). */
4#ifndef MESH_ABI_HOST_MLOAD_H
5#define MESH_ABI_HOST_MLOAD_H
6
7#include <stdbool.h>
8#include <stddef.h>
9#include <stdint.h>
10#include "mesh/abi/fields.h"
11
12/* Member k's load at mload(k), MLOAD_BYTES: the last F_LOADREP it sent (its
13 * own record: this machine's, at each sample). Bytes ML_SHARE..MLOAD_BYTES
14 * are the frame's body. */
15#define MESH_S_MLOAD 0x1200
16#define MESH_MLOAD_BYTES 0x40
17#define MESH_ML_AT_MS 0x00 /* u64 this meshd's uptime ms when it arrived (0: never) */
18#define MESH_ML_SHARE 0x08 /* f32 S_GPU_SHARE */
19#define MESH_ML_SHARE10 0x0c /* f32 S_GPU_SHARE10 */
20#define MESH_ML_MAX_GAP_US 0x10 /* f32 S_GPU_MAX_GAP_US */
21#define MESH_ML_CPU 0x14 /* f32 S_CPU_UTIL */
22#define MESH_ML_CPU_BIG 0x18 /* f32 */
23#define MESH_ML_CPU_LITTLE 0x1c /* f32 */
24#define MESH_ML_PSI_CPU 0x20 /* f32 */
25#define MESH_ML_PSI_MEM 0x24 /* f32 */
26#define MESH_ML_MESHD_CPU 0x28 /* f32 */
27#define MESH_ML_MEM_AVAIL_MB 0x2c /* u32 */
28#define MESH_ML_MEM_TOTAL_MB 0x30 /* u32 */
29#define MESH_ML_DISK_FREE_MB 0x34 /* u32 */
30#define MESH_ML_CPUS 0x38 /* u32 big | little << 16 */
31#define MESH_ML_FLAGS 0x3c /* u32 its LF_* */
32/* F_LOADREP's body: a member record from ML_SHARE on. */
33#define MESH_LOADREP_BYTES (MESH_MLOAD_BYTES - MESH_ML_SHARE)
34#define MESH_MLOAD_FIELDS_LEN 15
35extern const mesh_field MESH_MLOAD_FIELDS[15];
36
37/* Member k's load record. */
38static inline size_t mesh_mload(uint32_t k) { return MESH_S_MLOAD + MESH_MLOAD_BYTES * (size_t)k; }
39
40/* The Rust const asserts that only involve this package. */
41_Static_assert(MESH_ML_SHARE + MESH_LOADREP_BYTES == MESH_MLOAD_BYTES, "ML_SHARE + LOADREP_BYTES == MLOAD_BYTES");
42_Static_assert((MESH_S_MLOAD % 8 == 0), "S_MLOAD.is_multiple_of(8)");
43_Static_assert((MESH_MLOAD_BYTES % 8 == 0), "MLOAD_BYTES.is_multiple_of(8)");
44
45#endif