Chapter 3. Locking system

本文介绍了Kamailio中的锁系统,包括SimpleLocksAPI和LockSetAPI的使用方法,以及如何在共享内存中分配锁变量的空间,并提供了故障排除的方法。

       Kamailio提供了一套有着简单接口的用户锁系统,以便我们在开发时使用。它的根元素是一个可以被锁定或者解锁的互斥信号量。SysV和POSIX提供的其他同步机制都不需要。

       锁可以被当做简单变量或者是锁集合(数组)使用。为了提高速度,默认情况下,由机器特定的代码实现锁。 如果机器的架构不明,Kamailio将使用SysV信号量。

1. Simple Locks API

头文件:locking.h

锁类型声明:gen_lock_t

创建锁:gen_lock_t* lock_allock();

释放锁:void lock_dealloc(gen_lock_t *lock);

初始化锁:gen_lock_t* lock_init(gen_lock_t *lock);

销毁锁:void lock_destroy(gen_lock_t *lock);

加锁:void lock_get(gen_lock_t *lock);  或者  int lock_try(gen_lock_t *lock);

解锁:void lock_release(gen_lock_t *lock);

2. Lock Set API

The lock set is an array of gen_lock_t.

头文件:locking.h

锁类型声明:gen_lock_set_t

创建锁:gen_lock_set_t* lock_set_alloc();

释放锁:void lock_set_dealloc(gen_lock_set_t *set);

初始化锁:gen_lock_set_t* lock_set_init(gen_lock_set_t *set); 

销毁锁:void lock_set_destroy(gen_lock_set_t *set);

加锁:void lock_set_get(gen_lock_set_t *set, int index); 或者 int lock_set_try(gen_lock_set_t *set, int index);

解锁:void lock_set_release(gen_lock_set_t *set, int index);

总结:以上两种类型的所变量,都必须在共享内存中申请空间,以便在kamailio中跨进程访问。

故障排除方法:可以用top或者ps命令获取进程PID,然后由gdb命令在命令行调试进程,使用bt命令查看进程调用堆栈,确认哪里没有解锁。

演示了为无线无人机电池充电设计的感应电力传输(IPT)系统 Dynamic Wireless Charging for (UAV) using Inductive Coupling 模拟了为无人机(UAV)量身定制的无线电力传输(WPT)系统。该模型演示了直流电到高频交流电的转换,通过磁共振在气隙中无线传输能量,以及整流回直流电用于电池充电。 系统拓扑包括: 输入级:使用IGBT/二极管开关连接到全桥逆变器的直流电压源(12V)。 开关控制:脉冲发生器以85 kHz(周期:1/85000秒)的开关频率运行,这是SAE J2954无线充电标准的标准频率。 耦合级:使用互感和线性变压器块来模拟具有特定耦合系数的发射(Tx)和接收(Rx)线圈。 补偿:包括串联RLC分支,用于模拟谐振补偿网络(将线圈调谐到谐振频率)。 输出级:桥式整流器(基于二极管),用于将高频交流电转换回直流电,以供负载使用。 仪器:使用示波器块进行全面的电压和电流测量,用于分析输入/输出波形和效率。 模拟详细信息: 求解器:离散Tustin/向后Euler(通过powergui)。 采样时间:50e-6秒。 4.主要特点 高频逆变:模拟85 kHz下IGBT的开关瞬态。 磁耦合:模拟无人机着陆垫和机载接收器之间的松耦合行为。 Power GUI集成:用于专用电力系统离散仿真的设置。 波形分析:预配置的范围,用于查看逆变器输出电压、初级/次级电流和整流直流电压。 5.安装与使用 确保您已安装MATLAB和Simulink。 所需工具箱:必须安装Simscape Electrical(以前称为SimPowerSystems)工具箱才能运行sps_lib块。 打开文件并运行模拟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值