[问题] 请教在Driver这两种宣告的方式有何好坏处

楼主: greenlinux (GreenLinux)   2013-12-05 00:46:17
请教各位:
像以下的程式架构:
#include xxx.h
..............
static int data[1000];
void get_data()
{
for (i=0; i<1000;i++)
data[i] = some_process();
}
void save_data(int status)
{
save(data);
}
int interrupt_will_do()
{
get_data();
save_data(Now_Status);
}
data[1000]这个 matrix 会一直在get_data()更新然后做save_data()等处理
这样的话, (1)到底data[]像以上的方式宣告在driver的一开始较好(因为这样
只需要宣告一次), 还是
(2)每次进入get_data()再宣告,然后将data[]的pointer传给save_data()较好??
或是(3) 在driver code一开始用 struct 的方式宣告, 然后在 get_data()
及 save_data 以 some_struct.data[] 来处理较好????
谢谢各位的指导..
作者: yvb   2013-02-07 01:42:00
(2) 如果 data 不是 static, 那就要注意是否会发生C_and_CPP 置底十三诫之第5诫或第6诫之状况.如果是 static, 感觉没太大差别, 只是 variable scope 问题.若要考虑未来可能多个instances,那(3)或许是较佳选项,但可能会是 some_struct_pointer->data[] ?
楼主: greenlinux (GreenLinux)   2013-02-07 14:33:00
To yvb: 谢谢你的指导
作者: Bode123 (中肯宝宝)   2013-02-13 16:59:00
2 作法有问题 离开后区域变量值就被其他东西改了1跟3不差不多意思吧 我觉得1 3两个都可但要注意是否需要LOCK一下
作者: leolarrel (真.粽子无双)   2013-02-21 11:38:00
要考虑到,driver是在kernel 的环境执行,stack 大小不是无限制的

Links booklink

Contact Us: admin [ a t ] ucptt.com