11#ifndef __RIL_PROBE_H__
12#define __RIL_PROBE_H__
23#define RIL_PROBE_TIMEOUT_MAX_MS 60000U
#define RIL_BACKEND_IFNAME_MAX
后端内部网络接口名称容量,包含结尾 NUL
Definition ril_backend.h:33
#define RIL_CONFIG_MAX_PROBES
最大网络探测目标数量
Definition ril_config.h:22
int ril_probe_collect(ril_probe_t *probe, ril_probe_state_event_t *result)
非阻塞收集一轮网络探测结果。
int ril_probe_schedule(ril_probe_t *probe, const ril_probe_request_t *request)
复制并调度一轮 APN 网络探测。
bool ril_probe_bind_error_is_unavailable(int error_code)
判断接口绑定错误是否表示当前探测不可执行。
int ril_probe_init(ril_probe_t *probe, const ril_config_t *config, const ril_probe_ops_t *ops)
初始化可选的单个网络探测工作线程。
bool ril_probe_targets_are_healthy(uint8_t executed_count, uint8_t succeeded_count)
判断一轮中是否至少有一个目标成功。
void ril_probe_deinit(ril_probe_t *probe)
停止工作线程并释放同步资源。
uint64_t ril_probe_address_deadline(uint64_t now_ms, uint64_t deadline_ms, size_t remaining_addresses)
为当前地址分配本目标剩余时间中的公平份额。
int ril_probe_bind_interface(int fd, const char *ifname)
将探测 socket 绑定到指定网络接口。
tbox_rild 启动时一次性读取的配置快照
Definition ril_config.h:104
一个可被多路 APN 共用的探测目标
Definition ril_config.h:80
可由单元测试替换的探测线程操作
Definition ril_probe.h:57
void * context
操作实现上下文
Definition ril_probe.h:67
int(* thread_create)(pthread_t *thread, const pthread_attr_t *attr, void *(*entry)(void *), void *context)
创建探测工作线程。
Definition ril_probe.h:62
void(* execute)(const ril_probe_request_t *request, const atomic_bool *stop, bool *healthy, bool *available, void *context)
执行一轮网络探测。
Definition ril_probe.h:59
int(* thread_cancel)(pthread_t thread)
取消探测工作线程。
Definition ril_probe.h:66
int(* thread_join)(pthread_t thread, void **result)
等待探测工作线程退出。
Definition ril_probe.h:64
一轮 APN 网络探测请求
Definition ril_probe.h:29
char ifname[RIL_BACKEND_IFNAME_MAX]
绑定探测流量的网络接口名称
Definition ril_probe.h:34
uint32_t timeout_ms
单目标探测超时,单位毫秒
Definition ril_probe.h:39
uint64_t generation
APN 链路代次,用于丢弃过期结果
Definition ril_probe.h:31
uint8_t probe_count
探测目标配置数量
Definition ril_probe.h:37
const ril_probe_config_t * probes
探测器持有的不可变目标配置
Definition ril_probe.h:38
uint8_t probe_mask
本轮需要执行的探测目标位掩码
Definition ril_probe.h:36
uint8_t apn_index
APN 配置索引
Definition ril_probe.h:30
一轮 APN 网络探测结果
Definition ril_probe.h:46
bool available
本轮是否存在可执行的探测目标
Definition ril_probe.h:50
bool healthy
是否至少有一个目标探测成功
Definition ril_probe.h:49
uint8_t apn_index
APN 配置索引
Definition ril_probe.h:47
uint64_t generation
APN 链路代次
Definition ril_probe.h:48
单工作线程、单请求槽和单结果槽的探测执行器
Definition ril_probe.h:108
pthread_t worker
探测工作线程
Definition ril_probe.h:113
pthread_mutex_t mutex
保护请求和结果槽的互斥锁
Definition ril_probe.h:111
ril_probe_config_t probes[RIL_CONFIG_MAX_PROBES]
探测目标配置副本
Definition ril_probe.h:109
bool request_ready
请求槽是否包含待处理请求
Definition ril_probe.h:118
ril_probe_ops_t ops
线程与探测操作
Definition ril_probe.h:110
bool initialized
执行器是否已初始化
Definition ril_probe.h:123
bool sync_ready
同步对象是否已初始化
Definition ril_probe.h:121
pthread_cond_t condition
唤醒工作线程的条件变量
Definition ril_probe.h:112
uint8_t probe_count
探测目标配置数量
Definition ril_probe.h:117
ril_probe_state_event_t result
单结果槽
Definition ril_probe.h:116
bool request_inflight
工作线程是否正在探测
Definition ril_probe.h:119
bool worker_started
工作线程是否已创建
Definition ril_probe.h:122
atomic_bool stop
工作线程停止标志
Definition ril_probe.h:114
bool result_ready
结果槽是否包含未收集结果
Definition ril_probe.h:120
ril_probe_request_t request
单请求槽
Definition ril_probe.h:115