第1部分 T-Engine工程和T-Kernel 3
1 何谓T-Engine 3
2 单一源化的T-Kernel和T-License 6
3 T-Engine开发组件 7
4 T-Engine的系统构成 9
4.1 标准开发平台T-Engine 9
4.2 T-Engine的软件构成 11
4.3 T-Kernel概要 13
4.4 T-Kernel的核心对象 14
4.5 T-Kernel的动态资源管理 15
4.6 T-Kernel的内存管理 16
4.7 T-Kernel的标准化 18
第2部分 T-Kernel规范 21
1 T-Kernel概述 21
1.1 T-Kernel定位 21
1.2 可裁剪性 22
2 T-Kernel规范的基本概念 24
2.1 基本术语 24
2.2 任务状态和调度规则 25
2.2.1 任务状态 25
2.2.2 任务调度规则 28
2.5.1 非任务部分执行时的系统状态 31
2.5 系统状态 31
2.4 任务异常处理 31
2.3 中断处理 31
2.5.2 任务无关部分(运行状态)与准任务部分(运行状态) 32
2.6 对象 34
2.7 内存 35
2.7.1 地址空间 35
2.7.2 非驻留内存 35
2.7.3 保护级别 36
3 通用T-Kernel规范 37
3.1 数据类型 37
3.1.1 普通数据类型 37
3.1.2 其他定义的数据类型 39
3.2 系统调用(函数) 40
3.2.1 系统调用(函数)格式 40
3.2.2 在任务无关部分(状态)中可用的系统调用(函数) 40
3.2.3 限制系统调用函数的调用 41
3.2.4 参数数据包的修改 41
3.2.5 函数代码 42
3.2.6 错误代码 42
3.2.7 时限 43
3.2.8 相对时间和系统时间 44
3.3 高级语言支持程序 45
4.1 任务管理函数 46
tk_cre_tsk(建立任务) 46
4 T-Kernel/OS函数 46
tk_del_tsk(删除任务) 51
tk_sta_tsk(启动任务) 51
tk_ext_tsk(退出调用任务) 52
tk_exd_tsk(退出和删除调用任务) 53
tk_ter_tsk(终止其他任务) 54
tk_chg_pri(改变任务的优先级) 55
tk_chg_slt(改变任务时间片) 57
tk_get_tsp(获取任务固定空间) 58
tk_set_tsp(设置任务固定空间) 59
tk_get_rid(获取任务资源ID) 60
tk_set_rid(设置任务资源ID) 61
tk_get_reg(获取任务寄存器的内容) 61
tk_set_reg(设置任务寄存器) 62
tk_get_cpr(获取协处理器寄存器的内容) 63
tk_set_cpr(设置协处理器寄存器) 64
tk_inf_tsk(获取任务统计信息) 65
tk_ref_tsk(查询任务状态) 66
tk_slp_tsk(使调用任务进入睡眠状态) 69
4.2 任务相关的同步函数 69
tk_wup_tsk(唤醒其他任务) 70
tk_can_wup(取消唤醒任务) 71
tk_rel_wai(释放等待) 72
tk_sus_tsk(挂起其他任务) 74
tk_frsm_tsk(强制恢复挂起状态的任务) 75
tk_rsm_tsk(恢复挂起状态的任务) 75
tk_sig_tev(发送任务事件) 77
tk_dly_tsk(延迟任务) 77
tk_wai_tev(等待任务事件) 78
tk_dis_wai(禁止任务等待) 79
4.3 任务异常处理函数 82
tk_ena_wai(允许任务等待) 82
tk_def_tex(定义任务异常处理程序) 83
tk_dis_tex(禁止任务异常) 85
tk_ena_tex(允许任务异常) 85
tk_ras_tex(提交任务异常) 86
tk_end_tex(终止任务异常处理程序) 87
tk_ref_tex(查询任务异常状态) 88
4.4.1 信号量 89
4.4 同步和通信函数 89
tk_cre_sem(建立信号量) 90
tk_sig_sem(释放信号量) 92
tk_del_sem(删除信号量) 92
tk_wai_sem(等待信号量) 93
tk_ref_sem(查询信号量状态) 94
4.4.2 事件标志 95
tk_cre_flg(建立事件标志) 96
tk_del_flg(删除事件标志) 97
tk_clr_flg(清除事件标志) 98
tk_set_flg(设置事件标志) 98
tk_wai_flg(等待事件标志) 99
tk_ref_flg(查询事件标志状态) 102
4.4.3 邮箱 103
tk_cre_mbx(建立邮箱) 104
tk_del_mbx(删除邮箱) 106
tk_snd_mbx(发送消息到邮箱中) 107
tk_rcv_mbx(接收邮箱中的消息) 108
tk_ref_mbx(查询邮箱状态) 109
4.5 扩展同步和通信函数 110
4.5.1 互斥体 110
tk_cre_mtx(建立互斥体) 112
tk_del_mtx(删除互斥体) 114
tk_loc_mtx(锁定互斥体) 115
tk_unl_mtx(解锁互斥体) 116
tk_ref_mtx(查询互斥体状态) 117
4.5.2 消息缓冲区 118
tk_cre_mbf(建立消息缓冲区) 119
tk_snd_mbf(发送消息到消息缓冲区) 122
tk_del_mbf(删除消息缓冲区) 122
tk_rcv_mbf(从消息缓冲区中接收消息) 124
tk_ref_mbf(获取消息缓冲区的状态) 125
4.5.3 集合点端口 126
tk_cre_por(建立集合点端口) 128
tk_cal_por(调用集合点端口) 130
tk_del_por(删除集合点端口) 130
tk_acp_por(接受集合点端口) 132
tk_fwd_por(转发集合点到其他端口) 136
tk_rpl_rdv(回应集合点) 140
tk_ref_por(查询端口状态) 142
4.6.1 固定大小的内存池 143
4.6 内存池管理函数 143
tk_cre_mpf(建立固定大小的内存池) 144
tk_get_mpf(获取固定大小的内存块) 146
tk_del_mpf(删除固定大小的内存池) 146
tk_ref_mpf(查询固定大小的内存池的状态) 148
tk_rel_mpf(释放固定大小的内存块) 148
4.6.2 大小可变的内存池 149
tk_cre_mpl(建立大小可变的内存池) 150
tk_del_mpl(删除大小可变的内存池) 152
tk_get_mpl(获取大小可变的内存块) 153
tk_rel_mpl(释放大小可变的内存块) 154
tk_ref_mpl(查询大小可变的内存池的状态) 155
tk_set_tim(设置系统时间) 156
4.7.1 系统时间管理函数 156
4.7 时间管理函数 156
tk_get_otm(获取运行时间) 157
tk_get_tim(查询系统时间) 157
4.7.2 周期性处理程序 158
tk_cre_cyc(建立周期性处理程序) 159
tk_sta_cyc(启动周期性处理程序) 162
tk_del_cyc(删除周期性处理程序) 162
tk_stp_cyc(停止周期性处理程序) 163
tk_ref_cyc(查询周期性处理程序的状态) 163
4.7.3 报警处理程序 164
tk_cre_alm(建立报警处理程序) 165
tk_del_alm(删除报警处理程序) 167
tk_sta_alm(启动报警处理程序) 167
tk_stp_alm(停止报警处理程序) 168
tk_ref_alm(查询报警处理程序的状态) 169
tk_def_int(定义中断处理程序) 170
4.8 中断管理函数 170
tk_ret_int(从中断处理程序中返回) 173
tk_rot_rdq(翻转就绪队列) 175
4.9 系统管理函数 175
tk_get_tid(获取任务标识符(ID)) 176
tk_dis_dsp(禁止分派) 177
tk_ena_dsp(允许分派) 178
tk_ref_sys(查询系统状态) 179
tk_set_pow(设置电源模式) 180
tk_ref_ver(查询版本信息) 182
4.10 子系统管理函数(功能) 184
tk_def_ssy(定义子系统) 185
tk_cln_ssy(调用子系统的清除函数) 190
tk_sta_ssy(调用子系统的启动函数) 190
tk_evt_ssy(调用子系统的事件处理函数) 191
tk_ref_ssy(查询子系统的状态) 192
tk_cre_res(建立资源组) 193
tk_get_res(获取资源管理块) 195
tk_del_res(删除资源组) 195
5 T-Kernel/SM函数 197
tk_ref_smb(查询系统内存块) 198
tk_rel_smb(释放系统内存块) 198
tk_get_smb(分配系统内存块) 198
5.1.1 系统内存分配 198
5.1 系统内存管理函数 198
5.2 地址空间管理函数 199
Krealloc(重新分配驻留内存) 199
5.1.2 内存分配库 199
Vrealloc(重新分配非驻留内存) 199
Vmalloc(分配非驻留内存) 199
Vcalloc(分配非驻留内存单元) 199
Kcalloc(分配驻留内存单元) 199
Kmalloc(分配驻留内存) 199
Vfree(释放非驻留内存) 199
Kfree(释放驻留内存) 199
SetTaskSpace(设置任务空间) 200
5.2.1 地址空间配置 200
5.2.2 地址空间检查 200
ChkSpaceTstrRW(检查读-写访问权(TRON代码)) 201
ChkSpaceTstrR(检查读访问权(TRON代码)) 201
ChkSpaceRW(检查读-写访问权) 201
ChkSpaceRE(检查读-执行访问权) 201
ChkSpaceR(检查读访问权) 201
ChkSpaceBstrR(检查读访问权(字符串)) 201
5.2.3 锁定地址空间 201
ChkSpaceBstrRW(检查读-写访问权(字符串)) 201
5.2.5 映射内存 202
MapMemory(映射内存) 202
5.2.4 获取物理地址 202
CnvPhysicalAddr(获取物理地址) 202
LockSpace(锁定地址空间) 202
UnlockSpace(解锁地址空间) 202
UnmapMemory(解除映射内存) 203
5.3.1 基本概念 203
5.3 设备管理函数 203
5.3.2 应用程序接口 206
tk_opn_dev(打开设备) 207
tk_cls_dev(关闭设备) 208
tk_rea_dev(读取设备数据) 209
tk_wri_dev(写入设备数据) 210
tk_srea_dev(同步读) 210
tk_swri_dev(同步写) 211
tk_wai_dev(等待设备) 211
tk_sus_dev(挂起设备) 212
tk_ref_dev(通过设备名查询设备) 214
tk_oref_dev(通过设备描述符查询设备) 214
tk_get_dev(获取设备名称) 214
tk_evt_dev(发送驱动器请求事件) 215
tk_lst_dev(获取注册的设备信息) 215
5.3.3 设备注册 216
tk_def_dev(注册设备) 217
tk_ref_idv(查询设备初始化信息) 218
5.3.4 设备驱动程序接口 218
5.3.5 属性数据 224
5.3.6 设备事件通知 226
5.3.7 设备挂起/恢复处理 227
5.3.8 磁盘驱动程序的特殊作用 228
5.4 中断管理函数 229
5.4.1 CPU中断控制 229
isDI(获取中断禁止的状态) 230
EI(允许中断) 230
DI(禁止中断) 230
5.4.2 中断控制器的控制 230
T-Kernel API索引 231
本规范中描述的T-Kernel API(系统调用、扩展SVC、库和宏)按字母顺序列出如下。CheckInt(检查中断) 231
5.5 I/O端口访问支持函数 231
ClearInt(清除中断) 231
DINTNO(获取中断定义编号) 231
DisableInt(禁止中断) 231
EnableInt(允许中断(中断优先级)) 231
EndOfInt(发出中断结束) 231
WaitNsec(Microwait(ns)) 232
WaitUsec(Microwait(μs)) 232
out_h(写半字数据) 232
in_w(读字数据) 232
in_h(读半字数据) 232
in_b(读字节数据) 232
out_w(写字数据) 232
out_b(写字节数据) 232
5.5.2 Micro等待 232
5.5.1 I/O端口访问 232
5.6 电源管理函数 233
5.7 系统配置信息管理函数 233
low_pow(进入低功耗模式) 233
off_pow(挂起系统) 233
5.7.1 获得系统配置信息 234
tk_get_cfn(获取数字串) 234
tk_get_cfs(获取字母串) 235
5.7.2 标准系统配置信息 235
5.8 子系统和设备驱动程序启动 236
6 T-Kernel/DS函数 239
td_lst_sem(查询对象ID列表) 240
td_lst_por(查询对象ID列表) 240
td_lst_ssy(查询对象ID列表) 240
td_lst_tsk(查询对象ID列表) 240
td_lst_flg(查询对象ID列表) 240
td_lst_mtx(查询对象ID列表) 240
td_lst_mpl(查询对象ID列表) 240
td_lst_mpf(查询对象ID列表) 240
td_lst_mbx(查询对象ID列表) 240
td_lst_cyc(查询对象ID列表) 240
td_lst_alm(查询对象ID列表) 240
td_lst_mbf(查询对象ID列表) 240
6.1 内核内部状态查询函数 240
td_cal_que(查询队列) 241
td_acp_que(查询队列) 241
td_smbf_que(查询队列) 241
td_flg_que(查询队列) 241
td_sem_que(查询队列) 241
td_rdy_que(获得优先执行的任务) 241
td_mtx_que(查询队列) 241
td_rmbf_que(查询队列) 241
td_mbx_que(查询队列) 241
td_mpl_que(查询队列) 241
td_mpf_que(查询队列) 241
td_ref_tsk(查询任务状态) 242
td_ref_ssy(查询对象状态) 244
td_ref_sem(查询对象状态) 244
td_ref_alm(查询对象状态) 244
td_ref_cyc(查询对象状态) 244
td_ref_por(查询对象状态) 244
td_ref_flg(查询对象状态) 244
td_ref_mbf(查询对象状态) 244
td_ref_mbx(查询对象状态) 244
td_ref_mpf(查询对象状态) 244
td_ref_mpl(查询对象状态) 244
td_ref_mtx(查询对象状态) 244
td_ref_tex(查询任务异常状态) 247
td_inf_tsk(查询任务统计信息) 248
td_set_reg(设置任务寄存器) 249
td_get_reg(获得任务寄存器) 249
td_ref_sys(查询系统状态) 250
td_get_tim(获得系统时间) 251
td_get_otm(获得系统运行时间) 252
td_ref_dsname(查询DS对象名称) 253
td_set_dsname(设置DS对象名称) 254
6.2 执行跟踪函数 255
td_hok_svc(定义系统调用/扩展SVC挂钩程序) 255
td_hok_dsp(定义任务分派挂钩程序) 257
td_hok_int(定义中断处理挂钩程序) 258
第3部分 T-Monitor规范 263
1 T-Monitor规范概述 263
2 系统函数 264
2.1 硬件初始化 264
2.2 系统启动 264
2.3 异常/中断/陷阱处理函数 265
3.2 命令格式 266
3 调试函数 266
3.1 控制台连接 266
3.3 命令列表 268
4 程序支持函数 286
5 引导处理的细节 293
5.1 引导处理概述 293
5.2 搜索可引导的设备 293
5.3 装载和启动主引导程序 294
第4部分 T-Engine相关参考文献目录 297
1 T-Engine的相关专刊 297
2 T-Engine的相关大事记总索引(2002年1月~2005年4月) 298
3 你该如何使用T-Kernel 306
4 T-License[T-Kernel的源代码许可协议] 308
第5部分 参考 315
1 C语言接口的列表 315
2 错误代码列表 324
3 修订记录 327