硬件开发-远程-1个月
¥6-12K/月
技能要求:
经验要求: 5-10年经验
程序员客栈
2022-10-13 17:00
工作描述:
项目编号:【23188】
linux内核(安卓arm64)c语言开发内核模块(服务端),通过tcp(同一局域网,wifi6),
接受pc端(win环境,python开发)按指令,读取本地大文件(100mb-1g)传送到pc端速度达到10m/s(同一局域网),并保证数据完整性。
步骤:
1.内核端,加载内核模块时,启动服务器线程,用于接收指令和拆解封包,处理指令;卸载模块时,暂停所有线程,释放内存,恢复正常操作
2.pc端,发送指令并接收结果,
3.封包格式:
封包长度 + crc32 + 封包指令 + 封包内容
0301 12345678 0001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
指令:
1 读取文件: 内核端、pc端 分别开启线程,用于发送和接收数据,不影响其他操作
2 暂停目标进程(包括所有线程): 不允许使用trap
3 恢复目标进程(包括所有线程): 不允许使用trap
python端写法:
b"".join({
len,
buf_crc32,
cmd,
body
})
内核端:
struct net_get_file{
word len,
int buf_crc32,
word cmd,
char body[0xff]
}
struct net_suspend_process{
word len,
int buf_crc32,
word cmd,
pid_t pid
}

4.测试用例:要求:1.稳定性,2.功能性
1.传送速度测试:100mb,1g文件测试
2.传送中途/崩溃,平稳关闭
3.暂停目标进程、恢复目标进程运行
4.设置崩溃点,平稳退出模块

5.TRACE定义:
#define TRACE(...) printk("[TRACE] " __VA_ARGS__)
#define TRACE_RED(...) printk("\033[31m[TRACE] \033[0m" __VA_ARGS__)//红字黑背景
#else
#define TRACE(...)
#endif

6.每个函数要求都要有注解


公司信息

立即沟通